package pfc;

/**
 * Gestiona el grupo de usuarios que participa en una conversación.
 * @author Gabriel Reus Rodríguez
 * @version 1.0, 06/11/2010
 */

import java.util.LinkedList;
import java.io.Serializable;

import pfc.Usuario;

public class Grupo implements Serializable
{
	/**
	*Lista de usuarios que pertenecen al grupo que participa en la conversación
	*/
	private LinkedList<Usuario> usuarios;

	private static final long serialVersionUID = 8799656478674716638L;


	/**
	 * Constructor.
	 */

	public Grupo()
	{
		usuarios= new LinkedList<Usuario>();
	}

	public Grupo(LinkedList<Usuario> usuarios)
	{
		this.usuarios=usuarios;
	}

	public LinkedList<Usuario> getUsuarios()
	{
		return usuarios;
	}

	/**
	*Añade un usuario.
	*/	
	public void addUsuario(Usuario user)
	{
		this.usuarios.add(user);
	}

	/**
	*Elimina la instancia de user de la lista de usuarios.
	*/
	public void removeUsuario(Usuario user) throws Exception
	{
		int i= -1;
		try
		{
			i=this.buscaObjeto(user);
		}
		catch(Exception e)
		{
			throw e;
		}
		this.usuarios.remove(i);
	}

	/**
	*Busca la instancia de Usuario en la lista.
	*/
	private int buscaObjeto(Usuario user) throws Exception
	{

		for(int i=0;i<this.usuarios.size();i++)
		{
			Usuario us=this.usuarios.get(i);
			if(us.getId().equals(user.getId()))
			{
				//Son iguales por lo que devuelvo la posición
				return i;
			}
		}
		//No se ha encontrado la instancia por lo que lanzo una excepción.
		throw new Exception("No se ha encontrado el objeto que se buscaba");
	}
}
